package org.batatasframework.support.reosurce;

import javax.persistence.EntityManager;

import org.batatasframework.support.database.jdbc.ConnectionAccessor;

/**
 * <pre>
 * 根据当前用户的身份来访问不同的资源，包括数据库资源、文件资源等
 * 
 * 数据库这里会有三种不同的类型：1.业务数据库(即用户的数据)，2.缓存数据库，3.基础数据库
 * 文件资源，1.用户文件库、2.缓存文件库、3.基础文件库
 * </pre>
 * @author jackson
 *
 */
public class ResourceAccessor implements AutoCloseable {
	
	/** 固定的数据、全局数据、基础数据。 */
	private EntityManager entityManager;

	/** 缓存，即如果{@link #ownerAccessor}没有定义的时候，可以临时存放的数据库 */
	private ConnectionAccessor cacheAccessor;
	
	/** 使用用户自己的数据库进行存储，如果用户使用的是远程存储的方式，则这里应该是指向远程的数据库；
	 * 如果使用的是用户本地的存储策略，这里则是指向用户自己的数据库 */
	private ConnectionAccessor ownerAccessor;

	@Override
	public void close() throws Exception {
		if(null != cacheAccessor) cacheAccessor.close();
		if(null != ownerAccessor) ownerAccessor.close();
	}
}
